dbt Cloudとdbt-core (CLI)の違いを整理してみた
こんにちは、nkhrです。
dbtというツールをご存じでしょうか。データウェアハウス(レイクハウス)のTransformationをサポートするツールで、Redshift, Snowflake, BigQuery, Databricsなどで利用できます。
(参照リンク:What, exactly, is dbt?)
dbtの利用を開始する場合は、SaaS製品のdbt Cloudを利用する方法と、Open Sourceのdbt-coreのみを利用する方法があります。
本ブログでは、dbt Cloudとdbt-coreについて、その違いと選択ポイントについて考えてみたいと思います。
dbt Cloudとdbt-coreの違い
dbt Cloudとdbt-coreは、両方「dbt Labs, Inc.」が管理しています。
- dbt-core
- Apache License 2.0(詳細はリンク先を参照)で利用可能
- dbtコマンドとコマンドを利用するためのCLIインタフェースを提供
- dbt command一覧
- dbt Cloud
- SaaS製品
- dbt-coreをベースに開発・デプロイなどの機能を提供
- planはDeveloper, Team, Enterpriseに分かれている(2022/02時点)
dbt Cloudとdbt-coreで提供される機能
dbt Cloudとdbt-coreで提供される主な機能を書きだしてみました。
Package利用やテスト、ドキュメント生成などの機能はdbt-core機能(コマンド)のため、どちらでも利用できます。
dbt Cloudの機能
dbt Cloudは、dbt-coreにプラスしてデータ開発・デプロイのための様々な機能を提供します。
開発機能
dbtを利用した開発を1画面で行えるようにIDEが提供されます。
- Editor
- コードの作成のためのエディタ。ディレクトリ・ファイル表示、Git管理、dbtコマンド実行などを1画面上で実行できます
- Data Preview
- Editorの「Preview」ボタンをクリックすることでデータプレビュー表示可能
- Compile View (compile自体はdbt commandの機能のためdbt coreでも利用可能です)
- Editorの「Compile」ボタンをクリックすることでコンパイルされたSQLを表示可能
- dbtではJinja(テンプレートエンジン)を利用して利用するテーブル名や環境依存情報をテンプレート化することができます(Using Jinja for dbt)。テンプレートをコンパイルしてSQL文を生成することをCompileと呼んでいます
- dbt CLIを利用した場合はコンパイル結果は「target/compiled/{project name}/」に出力されます
- Lineage Graph
- データ生成におけるモデルのつながりを表示
ジョブ管理
ジョブ(実行するdbtコマンド)を設定し、スケジュール実行する機能が提供されます。WebHookやAPIによるジョブ実行の方式もあります。
環境変数の管理
Environments/Environment Variables機能により、環境(本番、開発、CIなど)ごとの設定や変数を管理できます。環境変数の優先度は、以下の通りです。
(参考リンク:公式ドキュメントEnvironment Variables)
dbt CLI実行の場合は、prfile.yamlファイルを利用して、環境(dev, prod)ごとの接続情報や設定を管理します。
ソースコード管理(Git)
dbt Cloudでは、dbt project (yaml, sqlソースコードなど)を管理するためのgit repogitoryがデフォルトで提供されます。そのため、外部のGitツール (GitHubやGitLab)が無くとも開始できます。
しかしながら、現時点ではPull Request機能などの機能は提供されていないため、外部のGitツールを利用することが推奨されています。
機能リリースが活発なため、最新の機能については、公式ドキュメントやRelease情報(dbt Cloud changelog)を確認してください。
どちらを選んだらよいの?
dbt Cloudでは効率的なデータ開発をはじめる機能がそろっているため、どちらを利用するか悩む場合は、まずは、dbt CloudのDeveloper plan(無料)で機能を確認するところからはじめると良いと思います。
dbt-coreからはじめる場合は、projectをgit repogitory(GitHubやGitLab)で管理することで、将来的にdbt cloudへの移行も可能です。
dbt Cloud利用時の考慮点
- SaaS製品のため、データベースに対してInternetからのInboundが発生します。dbt Cloudからのアクセス元IPアドレスは固定されているため、IPアドレス制限やSSH Tunnel設定を行うことでアクセス制限は可能です。詳しくは以下のリンクを参照してください。
-
dbt Cloudのインフラは利用者側で管理できませんが、状態が公開されており、通知設定が可能です。詳細は以下のリンクを参照してください。
まとめ
今回は、dbt Cloudとdbt-coreについて利用できる機能を整理してみました。
データ利用を閉域網の前提で考えている場合、インターネット経由での利用が前提となるSaaS製品は、有用な機能であっても利用をためらわれるかもしれません。
最近のクラウド環境では、セキュリティに関するサービスが充実しています。そのため、SaaS製品の機能が有用と考えられる場合は、クラウド環境のセキュリティサービスと組み合わせて、セキュリティリスクを管理することにより、利用に向けた方針をご検討されてみてはいかがでしょうか。
以上、nkhrでした。